﻿// testCode.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
import  OverLoadingTes;

#include <iostream>
#include <string>
#include <vector>
#include <array>
#include <algorithm>
#include <numeric>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
#define  VEXNUM  5

void print(int AA[][VEXNUM]) {
  int ii, jj;
  for (ii = 0; ii < VEXNUM; ii++) {
    for (jj = 0; jj < VEXNUM; jj++)
      printf("%5d", AA[ii][jj]);
    printf("\n");

  }
}

//设计和实现一种LRU cache（ Least Recently Used(LRU) cache ）。支持get和set操作->
//get(key) :如果key存在key中则返回对应的value，否则返回 - 1
//set(key, value) : 更新key对应的value，如果key不存在则插入对应的key, value。如果cache达到容量则淘汰最久未使用的键值对之后再插入。
class LRUCache {
public:
  LRUCache(int capacity) {
  }
  int get(int key) {
  }
  void set(int key, int value) {
  }


};
//
////参考用例,把get结果打印出来
//LRUCache* cache = new LRUCache(2)
//cache->set(1, 1);
//cache->set(2, 2);
//cache->get(1);
//cache->set(3, 3);
//cache->get(2);
//cache->set(4, 4);
//cache->get(1);
//cache->get(3);
//cache->get(4);

template<typename T, unsigned N>
std::size_t len(T(&)[N]) {
  return N;
}

//template<typename T>
//typename T::size_type len(T const& t) {
//  return t.size();
//}
template<typename T>
decltype (T().size(), typename T::size_type()) len(T const& t) {
  return t.size();
}

unsigned len(...) {
  return 0;
}

class CMYClass {
//public:
  using size_type = unsigned int;
};

//int run_main(); //导入 import  OverLoadingTes;后，可以没有这个声明4了

int main()
{
  run_main();

  const char(* padd)[6] = &"hello";

  vector<int> myvector{ 1,2,34,5 };
  cout << len(myvector) << endl;//4

  cout << len(3.14) << endl;//0
  cout << len(CMYClass{}) << endl;
  return 0;
}
